package org.car.world;

import org.car.word.service.util.MyEndPoint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
/**
 *
 * @Title: main
 * @Description: 启动类
 * @param @param args    参数
 * @return void    返回类型
 * @throws
 */
import org.springframework.context.annotation.Configuration;

/**
 * @author szw
 * @ClassName: config
 * @Description:移除 @SpringBootApplication and @ComponentScan, 用 @EnableAutoConfiguration 来替代
 * 应用场景是：
 * 1、会导致项目启动时间变长。当启动一个大的应用程序,或将做大量的集成测试启动应用程序时，影响会特别明显。
 * 2、会加载一些不需要的多余的实例（beans）。
 * 3、会增加 CPU 消耗。
 * @date 2019年2月16日
 */
@SpringBootApplication
@EnableCaching
public class config {

    public static void main(String[] args) {
        SpringApplication.run(config.class, args);
    }


    @Configuration
    static class MyEndpointConfiguration {
        @Bean
        @ConditionalOnMissingBean
        @ConditionalOnEnabledEndpoint
        public MyEndPoint myendpoit() {
            return new MyEndPoint();
        }
    }

}
